#pragma once
#ifndef __G_DEBUG_H__
#define __G_DEBUG_H__

#include <string>

#ifdef G_BUILD_DEBUG

	// Debug name is functional
	#define G_DECLARE_DEBUG_NAME()\
		public:\
			std::string	DebugName;\
			void SetDebugName(const char* Name);\
			const char* GetDebugName() const;\
		private:\

	#define G_DEFINE_DEBUG_NAME(ClassName)\
		void ClassName::SetDebugName(const char* Name)\
		{\
			DebugName = Name;\
		}\
		const char* ClassName::GetDebugName() const\
		{\
			return DebugName.c_str();\
		}

#else	// G_BUILD_DEBUG

	// Disable debug name
	#define G_DECLARE_DEBUG_NAME()\
		public:\
			void SetDebugName(const char* Name);\
			const char* GetDebugName() const;\
		private:

	#define G_DEFINE_DEBUG_NAME(ClassName)\
		void ClassName::SetDebugName(const char* Name)\
		{\
		}\
		const char* ClassName::GetDebugName() const\
		{\
			return NULL;\
		}

#endif // G_BUILD_DEBUG


#endif 